package br.ucb.ProjetoFinal.view;

import br.ucb.ProjetoFinal.bean.ApresentacaoLog;
import br.ucb.ProjetoFinal.domain.LogGrupo;
import br.ucb.ProjetoFinal.service.LogsService;
import java.io.Serializable;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

/*
 * Managed bean responsavel pelo caso de uso MANTER LOG
 */
@ManagedBean(name = "managedLogs")
@SessionScoped
public class ManagedLogs implements Serializable {

//////////////////////////////////ATRIBUTOS/////////////////////////////////////
    @EJB
    LogsService service;
    private ApresentacaoLog log;
    //Esta LIST receberá os vários logs cadastrados, na hora da pesquisa
    private List<ApresentacaoLog> logs;
    //Usado na CONSULTA
    private String dtInicio;
    private String dtFim;

////////////////////////////////////////////////////////////////////////////////
    public ManagedLogs() {
        //Seta o valor inicial para os radio-buttons na pagina da consulta
        setLog(new ApresentacaoLog());
    }

    // METODO USADO PARA PESQUISA DE LOGS////////////////////////////
    public String procurar() {
        //setLogs(interf.getLog(dtInicio, dtFim));

        //Se o array estiver vazio, significa que não foram encontrados resultados
        if (getLogs() == null) {
            return "semResults";
        } else {
            return "procurarLog";
        }
    }
    // FIM DO METODO////////////////////////////////////////////////////////////

    // METODO USADO PARA PESQUISA DE LOGS////////////////////////////
    public String procurarTodos() throws ParseException {
//            setLogs(interf.getTodosLogs());
//               List<LogGrupo> log = service.getLogGrupos();
//               for (LogGrupo loges : log) {
//                System.out.println(loges);
//            }
//            if(getLogs() == null){
        DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Date d1 = (Date) formatter.parse("2003-10-05");

        List<LogGrupo> log = service.getLogGrupos("2003-10-05", null);
//        for (LogGrupo loges : log) {
//            System.out.println(loges);
//        }
        return "semResults";
//            }
//            else
//                return "procuraLog";
    }
    // FIM DO METODO////////////////////////////////////////////////////////////

    // METODO USADO PARA DETALHAR UM LOG/////////////////////////////
    public String detalhar() {
        String index = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("index");
        setLog(getLogs().get(Integer.parseInt(index)));

        return "result";
    }
    // FIM DO METODO////////////////////////////////////////////////////////////

    //FUNÇÃO USADA PARA CONSULTAR UM LOG
    public String consultaLog() {
        setLog(new ApresentacaoLog());
        setDtInicio(null);
        setDtFim(null);

        return "consultaLogs";
    }
    //FIM DAS FUNÇÕES///////////////////////////////////////////////////////////

//GETTERS & SETTERS/////////////////////////////////////////////////////////////
    public ApresentacaoLog getLog() {
        return log;
    }

    public void setLog(ApresentacaoLog log) {
        this.log = log;
    }

    public void setLogs(List<ApresentacaoLog> logs) {
        this.logs = logs;
    }

    public List<ApresentacaoLog> getLogs() {
        return logs;
    }

    public String getDtInicio() {
        return dtInicio;
    }

    public String getDtFim() {
        return dtFim;
    }

    public void setDtInicio(String dtInicio) {
        this.dtInicio = dtInicio;
    }

    public void setDtFim(String dtFim) {
        this.dtFim = dtFim;
    }
}
